package com.qtt.app.controller;

import com.qtt.app.common.ApiResponse;
import com.qtt.app.entity.AppComment;
import com.qtt.app.entity.RequestData.UpdateComment;
import com.qtt.app.entity.RequestData.AddComment;
import com.qtt.app.entity.ReturnInfo.ReturnCommentCourse;
import com.qtt.app.entity.ReturnInfo.ReturnCourseComments;
import com.qtt.app.service.AppCommentService;
import com.qtt.app.service.OrderFormService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Api(tags = "评论模块", description = "CommentController")   //tags是api名字，description是简介，value:已废用
@RestController
@RequestMapping("/Comment")
public class AppCommentController {
    @Autowired
    AppCommentService appCommentService;
    @Autowired
    OrderFormService orderFormService;//为了从订单表中获取已经报名的课程

    @ApiOperation(value = "查看一门课程的所有评论(课程详情评论页)", notes = "")  //value是Get /Msg/list旁边的那个api简介；notes是点开的介绍，可用于详细说明api作用
    @GetMapping("/CourseCommentList")
    public ApiResponse<List<ReturnCourseComments>> getCourseCommentList(@ApiParam(value="课程general_id",required = true) @RequestParam(value="generalId",required=true) String generalId){

        List<ReturnCourseComments> entities = appCommentService.getCourseCommentList(generalId);
        if (entities.size() ==0) {//注意列表如果返回的是空，需要这么判断，空列表为[]
            return ApiResponse.<List<ReturnCourseComments>>builder().code(400).message("该课程还没有评论").data(entities).build();
        }
        return ApiResponse.<List<ReturnCourseComments>>builder().code(200).message("查看成功").data(entities).build();
    }

//    @ApiOperation(value = "绑定appComment表的评分", notes = "该接口需结合，CourseController的GET Course/myCourses即查看用户已经报名的课程，使用。courseId,orderId,都可以从那里获取，其他数据自行传入")  //value是Get /Msg/list旁边的那个api简介；notes是点开的介绍，可用于详细说明api作用
//    @PostMapping("/addAppComment")
//    public ApiResponse<String> addComment(@ApiParam(value="请求参数解释:courseId课程id;userId用户id;content评论内容;grade课程评分;orderId订单id",required = true) @RequestBody(required=true) AddComment requestData){
//        int b = appCommentService.addComment(requestData.getCourseId(),requestData.getUserId(),requestData.getContent(), requestData.getGrade(), requestData.getOrderId());
//        if(b ==200){
//            return ApiResponse.<String>builder().code(200).message("添加评论成功").data("true").build();
//        }
//        else{
//            return ApiResponse.<String>builder().code(400).message("添加评论失败，检查传入的参数").data("false").build();
//        }
//
//    }

//    @ApiOperation(value = "查看评论课程列表", notes = "该接口是联合订单表中查询得到的。isComment表示该订单课程是否已经评论，true为已评论，false为未评论。")  //value是Get /Msg/list旁边的那个api简介；notes是点开的介绍，可用于详细说明api作用
//    @GetMapping("/getCommentCourses")
//    public ApiResponse<List<ReturnCommentCourse>> getCommentCourses(@ApiParam(value="用户id",required = true) @RequestParam(value="userId",required=true) Long userId){
//        int orderState = 2;
//        List<ReturnCommentCourse> entities = orderFormService.getCommentCourse(userId,orderState);
//        if (entities.size() ==0) {//注意列表如果返回的是空，需要这么判断，空列表为[]
//            return ApiResponse.<List<ReturnCommentCourse>>builder().code(400).message("还没有购课").data(entities).build();
//        }
//        return ApiResponse.<List<ReturnCommentCourse>>builder().code(200).message("查看成功").data(entities).build();
//    }
//
//    @ApiOperation(value = "对一门课程进行评论", notes = "该接口需结合，CourseController的GET Course/myCourses即查看用户已经报名的课程，使用。courseId,orderId,都可以从那里获取，其他数据自行传入")  //value是Get /Msg/list旁边的那个api简介；notes是点开的介绍，可用于详细说明api作用
//    @PostMapping("/addComment")
//    public ApiResponse<String> addComment(@ApiParam(value="请求参数解释:courseId课程id;userId用户id;content评论内容;grade课程评分;orderId订单id",required = true) @RequestBody(required=true) AddComment requestData){
//        int b = appCommentService.addComment(requestData.getCourseId(),requestData.getUserId(),requestData.getContent(), requestData.getGrade(), requestData.getOrderId());
//        if(b ==200){
//            return ApiResponse.<String>builder().code(200).message("添加评论成功").data("true").build();
//        }
//        else{
//            return ApiResponse.<String>builder().code(400).message("添加评论失败，检查传入的参数").data("false").build();
//        }
//
//    }
//
//    @ApiOperation(value = "根据id查找一条记录", notes = "")
//    @GetMapping("/list/{id}")
//    public ApiResponse<AppComment> getInstitutionById(@PathVariable("id") Long appCommentId){
//        AppComment entity = appCommentService.getById(appCommentId);
//
//        if (entity != null){
//            return ApiResponse.<AppComment>builder().code(200).message("查找成功").data(entity).build();
//        }
//        else {
//            return ApiResponse.<AppComment>builder().code(400).message("查找失败").data(null).build();
//        }
//    }
//
//    @ApiOperation(value = "修改一条记录", notes = "只能修改评论内容和课程评分")
//    @PutMapping("/list/{id}")
//    public ApiResponse<String> updateUserById(@ApiParam(value="appCommentId评论表id",required = true) @PathVariable("id") Long id,
//                                              @ApiParam(value="修改评论信息：不修改的就删掉，只传要修改的字段",required = true) @RequestBody(required=true) UpdateComment requestData){
//        //先以userId往用户表查找，如果不存在，则无法修改；如果存在，在原来的记录上更新需要修改的字段即可。
//        int flag = appCommentService.updateContentOrGrade(id,requestData.getGrade(),requestData.getContent());
//        if (flag == 200){
//            return ApiResponse.<String>builder().code(200).message("修改成功").data(null).build();
//        }
//        else if(flag==401){
//            return ApiResponse.<String>builder().code(400).message("修改失败，不存在该评论，请检查id").data(null).build();
//        }
//        else if (flag == 402){
//            return ApiResponse.<String>builder().code(400).message("修改失败，修改grade时出错").data(null).build();
//        }
//        else if (flag == 403){
//            return ApiResponse.<String>builder().code(400).message("修改失败，修改content时出错").data(null).build();
//        }
//        else{
//            return ApiResponse.<String>builder().code(400).message("修改失败，请检查输入").data(null).build();
//        }
//    }


}
